//给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
//
//        如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
//
//        假设环境不允许存储 64 位整数（有符号或无符号）。
//
//        示例 1：
//        输入：x = 123
//        输出：321
//        示例 2：
//        输入：x = -123
//        输出：-321
//        示例 3：
//        输入：x = 120
//        输出：21
//        示例 4：
//        输入：x = 0
//        输出：
//        来源：力扣（LeetCode）
//        链接：https://leetcode-cn.com/problems/reverse-integer
//        著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
class Solution {
    //自己解的无法处理反转后刚好越界的情况
    public static int reverse(int x) {
        int lenght = String.valueOf(Math.abs(x)).length();
        int result = 0;
        if (x==0){
            return 0;
        }
        int n = 0;
        while(lenght>0){
            int num = x/(int)Math.pow(10,lenght-1);
            int tem = num*(int)Math.pow(10,n);
            result+=tem;
            n++;
            x = x - (num*(int)Math.pow(10,lenght-1));
            lenght--;
        }

        return result;
    }
    public int answer(int x) {
        long n = 0;
        while(x != 0) {
            n = n*10 + x%10;
            x = x/10;
        }
        return (int)n==n? (int)n:0;
    }
    public static void main(String[] args) {
//        System.out.println(String.valueOf(Math.abs(152)).length());
        System.out.println(reverse(1321515));
        System.out.println(reverse(1534236469));
//        System.out.println((int)Math.pow(10,0));
//        System.out.println((-123)%100);
//        System.out.println((-123)/100);
//        System.out.println((-123)/100);
//        System.out.println((-123)/1000);
    }
}